package com.heiye.user.biz.service;

import com.heiye.framework.common.response.PageResponse;
import com.heiye.framework.common.response.Response;
import com.heiye.user.api.dto.req.FindUserByIdReqDTO;
import com.heiye.user.api.dto.req.FindUsersByIdsReqDTO;
import com.heiye.user.api.dto.req.RegisterUserReqDTO;
import com.heiye.user.api.dto.resp.RegisterUserRspDTO;
import com.heiye.user.api.dto.resp.FindUserByIdRspDTO;
import com.heiye.user.biz.model.dto.resp.FindUserRspDTO;
import com.heiye.user.biz.model.vo.FindUserProfileReqVO;
import com.heiye.user.biz.model.vo.FindUserProfileRspVO;
import com.heiye.user.biz.model.vo.UpdateUserInfoReqVO;
import com.heiye.user.biz.model.vo.UserLanguageUpdateReqVO;

import java.util.List;

/**
 * @author: heiye
 * @date: 2024/09/29 下午3:03
 * @version: v1.0.0
 * @description: 用户业务
 */
public interface UserService {
    /**
     * 用户注册
     *
     * @param registerUserReqDTO
     * @return
     */
    Response<RegisterUserRspDTO> register(RegisterUserReqDTO registerUserReqDTO);

    /**
     * 修改用户的母语，以及感兴趣的语言
     *
     * @param userLanguageUpdateReqVO
     * @return
     */
    Response<?> userLanguageUpdate(UserLanguageUpdateReqVO userLanguageUpdateReqVO);

    /**
     * 查找用户基本信息
     *
     * @return
     */
    Response<FindUserRspDTO> find();

    /**
     * 更新用户信息
     *
     * @param updateUserInfoReqVO
     * @return
     */
    Response<?> updateUserInfo(UpdateUserInfoReqVO updateUserInfoReqVO);

    /**
     * 根据用户 ID 查询用户信息
     *
     * @param findUserByIdReqDTO
     * @return
     */
    Response<FindUserByIdRspDTO> findById(FindUserByIdReqDTO findUserByIdReqDTO);

    /**
     * 批量根据用户 ID 查询用户信息
     *
     * @param findUsersByIdsReqDTO
     * @return
     */
    Response<List<FindUserByIdRspDTO>> findByIds(FindUsersByIdsReqDTO findUsersByIdsReqDTO);

    /**
     * 获取用户主页信息
     *
     * @return
     */
    Response<FindUserProfileRspVO> findUserProfile(FindUserProfileReqVO findUserProfileReqVO);
}
